<!DOCTYPE HTML>
<html>
<head>
<title>WinActivate | AutoHotkey</title>
<meta name="description" content="The WinActivate command activates the specified window." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>WinActivate</h1>

<p>激活指定的窗口.</p>

<pre class="Syntax"><span class="func">WinActivate</span> <span class="optional">, WinTitle, WinText, ExcludeTitle, ExcludeText</span></pre>
<h2>参数</h2>
<dl>

  <dt>WinTitle</dt>
  <dd><p>窗口标题或识别目标窗口的其他条件. 请参阅 <a href="../misc/WinTitle.htm">WinTitle</a>.</p></dd>

  <dt>WinText</dt>
  <dd><p>如果使用此参数, 那么它必须是目标窗口中单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 当 <a href="DetectHiddenText.htm">DetectHiddenText</a> 的设置为 ON 时, 那么会检测到隐藏文本元素.</p></dd>

  <dt>ExcludeTitle</dt>
  <dd><p>标题中含有此参数值的窗口将被排除.</p></dd>

  <dt>ExcludeText</dt>
  <dd><p>文本中含有此参数值的窗口将被排除.</p></dd>

</dl>

<h2>备注</h2>
<p>当非活动窗口变为活动状态时, 操作系统也会使其处于最前面(将其带到堆栈的顶部). 如果窗口已经处于活动状态, 则不会发生这种情况.</p>
<p>如果窗口最小化且处于非活动状态, 那么在激活之前自动还原. 在 <span class="ver">[v1.1.20+]:</span> 如果 <em>WinTitle</em> 是字母 "A", 并且省略了其他参数, 这活动窗口(最小化的) 将会还原. <span class="ver">[v1.1.28.02+]:</span> 已经是活动状态的窗口(最小化的), 也会被还原.</p>
<p>在 60ms 的时间中, 会对目标窗口进行六次激活的尝试. 如果六次尝试都失败了, WinActivate 会自动发送 <code>{Alt 2}</code> 作为操作系统可能实施的限制的变通方法, 然后进行第七次尝试. 因此, 通常不需要在 WinActivate 后使用 <a href="WinWaitActive.htm">WinWaitActive</a> 或 <a href="WinActive.htm">IfWinNotActive</a>.</p>
<p>一般情况下, 如果有多个窗口匹配, 则最高匹配窗口(通常是最近使用的窗口) 将被激活. 如果该窗口已处于活动状态, 则它将保持活动状态, 而不是激活其下的任何其他匹配窗口. 但是, 如果使用 <a href="WinSet.htm#Bottom">WinSet Bottom</a> 将活动窗口移动到堆栈底部, 则可能会激活其他窗口, 即使活动窗口是匹配的.</p>
<p><a href="WinActivateBottom.htm">WinActivateBottom</a> 激活最底层的匹配窗口(通常是最近最少使用的那个).</p>
<p><a href="GroupActivate.htm">GroupActivate</a> 激活与窗口组指定的条件匹配中的一个窗口.</p>
<p><span class="ver">[v1.1.20+]:</span> 如果要激活的窗口处于隐藏状态并且 <a href="DetectHiddenWindows.htm">DetectHiddenWindows</a> 被设置为 OFF 时, 该窗口将永远不会视为一个匹配项. 相反, 只要有一个匹配窗口是可见的, 它就会被激活.</p>
<p>在激活一个窗口后立即激活其他的窗口, 在一些系统上任务栏按钮可能会闪烁(取决于操作系统和设置). 要避免此问题, 请使用 <a href="_WinActivateForce.htm">#WinActivateForce</a>.</p>
<p>窗口标题和文本是区分大小写的. 只有在打开 <a href="DetectHiddenWindows.htm">DetectHiddenWindows</a> 设置时, 才能检测到隐藏窗口.</p>
<p><strong>已知问题:</strong> 如果脚本运行在正在被远程桌面访问的计算机或服务器上, 当远程桌面客户端最小化时, WinActivate 可能会挂起. 一种解决办法是使用不需要激活窗口的命令, 如 <a href="ControlSend.htm">ControlSend</a> 和 <a href="ControlClick.htm">ControlClick</a>. 另一个可能的解决方法是在本地/客户端计算机的注册表上做如下设置:</p>
<pre><em>; 将 HKCU 改成 HKLM, 并对该系统上的所有用户生效.</em>
RegWrite REG_DWORD, HKCU, Software\Microsoft\Terminal Server Client
    , RemoteDesktop_SuppressWhenMinimized, 2</pre>

<h2>相关</h2>
<p><a href="WinActivateBottom.htm">WinActivateBottom</a>, <a href="_WinActivateForce.htm">#WinActivateForce</a>, <a href="SetTitleMatchMode.htm">SetTitleMatchMode</a>, <a href="DetectHiddenWindows.htm">DetectHiddenWindows</a>, <a href="../misc/WinTitle.htm#LastFoundWindow">上次找到的窗口</a>, <a href="WinExist.htm">WinExist() / IfWinExist</a>, <a href="WinActive.htm">WinActive() / IfWinActive</a>, <a href="WinWaitActive.htm">WinWaitActive</a>, <a href="WinWait.htm">WinWait</a>, <a href="WinWaitClose.htm">WinWaitClose</a>, <a href="WinClose.htm">WinClose</a>, <a href="GroupActivate.htm">GroupActivate</a>, <a href="WinSet.htm">WinSet</a></p>
<h2>示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>if WinExist("Untitled - Notepad")
    WinActivate <em>; 使用前面找到的窗口</em>
else
    WinActivate, Calculator</pre>
</div>

</body>
</html>